package main

import (
	"fmt"
	"sync"
	"time"
)

func main5() {
	// 创建读写锁
	lock := sync.RWMutex{}

	go func() {
		// 获得读锁（共享锁）
		lock.RLock()
		// 确保释放读锁（共享锁）
		lock.RUnlock()

		for i := 1; i <= 5; i++ {
			time.Sleep(time.Millisecond) // 模拟耗时操作
			fmt.Println(i)
		}

	}()

	go func() {
		// 获得写锁（独占锁）
		lock.Lock()
		// 确保释放写锁（独占锁）
		lock.Unlock()

		for i := 1; i <= 5; i++ {
			time.Sleep(time.Millisecond) // 模拟耗时操作
			fmt.Println(i * 10)
		}
	}()

	time.Sleep(time.Second * 2)
}
